package com.dmjj.cadcommon.util;


import com.dmjj.cadcommon.base.CreateManEntity;
import com.dmjj.cadcommon.base.LoginEntity;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class InsertCreatManInfo {
    public static  <T> T Update(T beforeUpdate, LoginEntity update){
        try {
            if(beforeUpdate==null){
                return null;
            }
            if(update==null){
                return null;
            }
            CreateManEntity updateMap = new CreateManEntity();
            updateMap.setCreatemanno(update.getUserid());
            updateMap.setCreatemanname(update.getName());
            Class<? extends Object> clazz = beforeUpdate.getClass();
            Class<? extends Object> clazzUpdate = updateMap.getClass();
            Field[] fields = clazzUpdate.getDeclaredFields();//得到要修改的对象的属性数组
            for (int i=0;i<fields.length;i++){
                Field field = fields[i];   //得到每个属性
                field.setAccessible(true);  //打破封装
                String name = field.getName();  //得到属性名
                Class type=field.getType();     //得到该属性的类型
                Object value = field.get(updateMap); //得到该属性的get方法的值
                if(value!=null){
                    //找到与原对象相同的属性的set方法
                    Method m=clazz.getMethod("set"+upperCase(name),type);
                    m.invoke(beforeUpdate,value);//给该方法设置值
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return beforeUpdate;
    }

    public static String upperCase(String str) {
        char[] ch = str.toCharArray();
        ch[0] = (char) (ch[0] - 32);
        return new String(ch);
    }

}
